public class TestDemo {
    public static void main(String[] args) {
        //运算符
        //int a=10/0;//异常，程序被抛出，Java中除数不能为0
        System.out.println("这是异常后的信息");//程序抛出后，后续代码无法执行
        float b = 5.5f;
        b %= 2;//可以对浮点数取模，复合运算中无需进行强制类型转换
        System.out.println(b);
        int c = 1;
        int d = 2;
        int max = c > d ? c : d;//三目运算符，其中表达式为布尔类型
        System.out.println(max);
        int e = 10;
        int f = 16;
        int g1 = e & f;//按位与，遇0为0
        int g2 = e | f;//按位或，遇1为1
        int g3 = e ^ f;//按位异或，相同为0，相异为1
        //10-0000 1010    16-0001 0000
        System.out.println(g1+" "+g2+" "+g3);
        //Java中也支持短路运算
        System.out.println(10 > 20 && 10 / 0 == 0);
        System.out.println(10 < 20 || 10 / 0 == 0);
        int h = -1;
        int h1 = h << 1;//左移，右边补0，乘2
        int h2 = h >> 1;//算术右移，左边补符号位，除2（对-1没用）
        int h3 = h >>> 1;//无符号右移，统一补0，此时-1变为int最大值
        System.out.println(h+" "+h1+" "+h2+" "+h3);
    }

    public static void main2(String[] args) {
        //变量，Java中没有全局变量这个概念
        //成员变量：类的内部，方法的外部
        //变量名（小驼峰）ageAvg  类名(大驼峰) BubbleSort
        {
            int a = 1;
            int b = 2;
        }
        /// int c = a + b;//异常错误，变量也有作用域
        //System.out.println(c);
        final int d = 10;
        //d=11;//final 相当于C语言中的const，修饰变量，变量不能被修改
        short e = 10;
        int f = 100;
        f += e;//Java中也存在整型提升，且在复合赋值中会自动调整类型
        System.out.println(f+" "+e);
    }

    public static void main1(String[] args) {
        //数据类型，Java中的数据类型都没有无符号类型
        byte a = 127;//字节型，1字节
        short b = 32767;//短整型，2字节
        int c = 2147483647;//整型，4字节
        long d = 9223372036854775807L;//长整型，8字节
        float e = 3.14159265758f;//单精度浮点型，4字节
        double f = 3.14159265758;//双精度浮点型，8字节
        char g = '嗨';//字符型，2字节，可以放入一个汉字
        boolean h = true;//布尔类型，无明确大小规定
        boolean i = false;//有可能是1比特，也有可能是1字节
        short b1 = (short)a;//低转高，无报错情况
        byte a1 = (byte)b;//高转低，会报错，强制类型转换后存在精度丢失问题
        System.out.println(b1+" "+a1);
        short a2 = 128;
        byte b2 = (byte)a2;//作业例题
        System.out.println(a2+" "+b2);
        if(h)//布尔类型的真与假
            System.out.println("h是真");
        if(!i)
            System.out.println("j是假");
        String j = "Hello word";//字符串型
        System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h+" "+i+" "+j);
        //Java中输出时，空格需要用双引号引起来，表示一个字符串，然后利用+号和其他数据进行拼接输出
        //与C语言大不同
    }
}